﻿#define _CRT_SECURE_NO_WARNINGS

#include "Tree.h"

//如果使用BTNode*类型数据作为函数的返回值，会造成内存泄漏
//结点初始化
BTNode NodeInit(BTDataType x)
{
	BTNode A;
	A.data = x;//这是一个不在你想使用的字符集里的字符
	A.pleft = NULL;
	A.pright = NULL;
	return A;
}

//先序建立二叉树
void CreatBinaryTree(BTNode** pT)
{
	char ch;
	scanf("%c", &ch);
	if (ch == '#')							//输入'#',代表插入空节点
	{
		*pT = NULL;
	}
	else
	{
		if (!((*pT) = (BTNode*)malloc(sizeof(BTNode))))
		{
			perror("malloc");
			exit(-1);
		}
		(*pT)->data = ch;						//创建根节点
		CreatBinaryTree(&((*pT)->pleft));			//构造左子树
		CreatBinaryTree(&((*pT)->pright));			//构造右子树
	}
	return;
}


//二叉树的先序遍历
void PrevOrder(BTNode* T)
{
	if (T == NULL)
	{
		printf("#");
		return;
	}
	printf("%c", T->data);
	PrevOrder(T->pleft);
	PrevOrder(T->pright);
}